package br.com.sap.controle;

import java.util.List;

import br.com.sap.modelo.Categoria;
import br.com.sap.modelo.Marca;
import br.com.sap.modelo.Tipo;
import br.com.sap.modelo.enums.EnumSituacao;
import br.com.sap.persistencia.servico.CategoriaServico;
import br.com.sap.persistencia.servico.MarcaServico;
import br.com.sap.persistencia.servico.ServicoGenerico;
import br.com.sap.persistencia.servico.TipoServico;



public class MarcaControle extends ControleGenerico<Marca> {

	
	private Marca marca = new Marca();
	private TipoServico tipoServico = new TipoServico();
	private MarcaServico marcaServico = new MarcaServico();
	private CategoriaServico categoriaServico = new CategoriaServico();
	private ControleGenerico<Marca> controleGenerico;
	
	
	
	public CategoriaServico getCategoriaServico() {
		return categoriaServico;
	}

	public void setCategoriaServico(CategoriaServico categoriaServico) {
		this.categoriaServico = categoriaServico;
	}
	
	
	public Marca getMarca() {
		return marca;
	}


	public void setMarca(Marca marca) {
		this.marca = marca;
	}


	public MarcaServico getMarcaServico() {
		return marcaServico;
	}


	public void setMarcaServico(MarcaServico marcaServico) {
		this.marcaServico = marcaServico;
	}


	public TipoServico getTipoServico() {
		return tipoServico;
	}

	public void setTipoServico(TipoServico tipoServico) {
		this.tipoServico = tipoServico;
	}

	public ControleGenerico<Marca> getControleGenerico() {
		return controleGenerico;
	}

	public void setControleGenerico(
			ControleGenerico<Marca> controleGenerico) {
		this.controleGenerico = controleGenerico;
	}

	@Override
	public ServicoGenerico<Marca> getServico() {
		// TODO Auto-generated method stub
		return this.marcaServico;
	}
	
	public List<Categoria> getListarCategoria() {
		return categoriaServico.getLista();
	}
	
	public List<Tipo> getListarTipo(Categoria categoria) {
		tipoServico.camposProcura.limpar();
		if (categoria != null) {
			tipoServico.camposProcura.add("categoria",
					categoria.getId().toString(), true);
		} else {
			System.out.println("CATEGORIA NULL");
			return null;
		}

		return tipoServico.procura();
	}

	public List<Marca> getListarmarcas() {
		
			marcaServico.camposProcura.limpar();
			this.getServico().camposProcura.add(("situacao"), "1", true);
			this.getServico().camposProcura.setCondicional("and");			
			return marcaServico.procura();
	}
	
	public List<Marca> getListarmarcasDesativadas() {
		
			marcaServico.camposProcura.limpar();
			this.getServico().camposProcura.add(("situacao"), "0", true);
			this.getServico().camposProcura.setCondicional("and");
			return marcaServico.procura();
	}
	
	public List<Marca> getListarmarcasativas(Marca marca) {
		marcaServico.camposProcura.limpar();			
		this.getServico().camposProcura.add(("descricao"), marca.getDescricao(), true);
		this.getServico().camposProcura.add(("situacao"), "1", true);
		this.getServico().camposProcura.setCondicional("AND");
		return marcaServico.procura();
	}


	
	public boolean registrarMarca(Marca marca){
		boolean retorno;
		retorno = false;
		
		if(antesProcurar(marca)){	
			if(persiste(marca)){
				
				retorno = true;				
				}else{
					
					retorno = false;
				}
			
		}
		
		
		return retorno;
		
	}
	
	public int desativarMarca(Marca marca){
		int retorno;
		retorno = 0;
		
		marca.setSituacao(EnumSituacao.INATIVO);
		
			if(persiste(marca)){
				
				retorno = 1;
				
				}else{
					
					retorno = 2;
					
				}
			
			
		return retorno;
		
	}
	
	

	
	
}
